'''urllib_代理的使用
为什么要使用代理?
    让服务器以为不是同一个客户端在请求
    防止我们的真实地址被泄露，防止被追究

理解正向代理和反向代理的区别?
    正向代理：对于浏览器知道服务器的真实地址，例如VPN
    反向代理：浏览器不知道服务器的真实地址，例如nginx
详细讲解：
    正向代理是客户端与正向代理客户端在同一局域网，客户端发出请求，正向代理 替代客户端向服务器发出请求。服务器不知道谁是真正的客户端，
    正向代理隐藏了真实的请求客户端。

反向代理：
    服务器与反向代理在同一个局域网，客服端发出请求，反向代理接收请求 ，反向代理服务器会把我们的请求分转发到真实提供服务的
    各台服务器Nginx就是性能非常好的反向代理服务器，用来做负载均衡。

免费代理ip网址：https://www.kuaidaili.com/free/inha/1/
'''

import urllib.request

# 获取访问的ip网址
url = 'http://www.whatismyip.com.tw/'
# url = 'http://www.baidu.com/s?wd=ip'
# url = 'https://gwgp-cekvddtwkob.n.bdcloudapi.com/ip/local/geo/v1/district'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.39'
    # 'Cookie': 'BIDUPSID=E0BF65B6296D2D96DC436E3247F2ABD9; PSTM=1672300844; BAIDUID=E0BF65B6296D2D966495EC3F505466E4:FG=1; BD_UPN=12314753; baikeVisitId=b217312b-913b-4e46-aeb4-19b3eaff455f; delPer=0; BD_CK_SAM=1; PSINO=1; H_PS_645EC=d149IW3eZBPec4zIG3CUipwVNrAxIwmLWumHLu79ODQF%2BYte%2BHFZHLZ1dUM; BA_HECTOR=85242l0ka4ah2g0k2g0g859q1i3vjo31m'
}

request = urllib.request.Request(url=url, headers=headers)

# handler处理器
# 1.定义handler
# handler = urllib.request.HTTPHandler()
proxy = {
    'http': '171.92.20.8:9000'
}
handler = urllib.request.ProxyHandler(proxies=proxy)
# 2.定义opener
opener = urllib.request.build_opener(handler)
# 3.使用open
response = opener.open(request)

# response = urllib.request.urlopen(request)

content = response.read().decode('utf-8')
print(content)

#用正则清洗数据
# pat=r'<title>(.*?)</title>'
# data=re.findall(pat,content)
# #输出结果
# print(data)
# print(data[0])

# with open('D:\\hxy\\test\\daili.html', 'w', encoding='utf-8') as fp:
#     fp.write(content)
